home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / cci / tifload.cci < prev   
Text File  |  1993-11-30  |  5KB  |  191 lines

  1. /*************************************************************************
  2. *    "tifload.cci" : TIFFデータの表示
  3. *************************************************************************/
  4.  
  5. #include    "ccilib.h"
  6.  
  7. /*    パレットデータ(HEwin 配色)    */
  8. char    PltDat[3][16] =
  9. {
  10.     /* G R  B                                */
  11.     { 0, 0, 0},    /* C_BALCK, C_THROUGH        */
  12.     { 0, 0, 0},    /* C_BLUE , C_MBLACK         */
  13.     { 7, 7, 8},    /* C_RED                    */
  14.     {12,12,13},    /* C_MAGENTA                */
  15.     { 6, 5, 7},    /* C_GREEN                    */
  16.     { 8, 7, 9},    /* C_CYAN                    */
  17.     {10, 9,11},    /* C_YELLOW                    */
  18.     {11,11,12},    /* C_WHITE                    */
  19.  
  20.     { 5, 5, 6},    /* C_HBALCK                    */
  21.     { 0, 0,11},    /* C_HBLUE                    */
  22.     { 0,11, 0},    /* C_HRED                    */
  23.     { 0,11,11},    /* C_HMAGENTA                */
  24.     {11, 0, 0},    /* C_HGEEN                    */
  25.     {11, 0,11},    /* C_HCYAN                    */
  26.     {11,11, 0},    /* C_HYELLOW                */
  27.     {14,14,15}    /* C_HWHITE                    */
  28. };
  29.  
  30. char    *IdlDspTime = NULL;
  31.  
  32. /*************************************************************************
  33. *    初期化画面の描画
  34. *************************************************************************/
  35.  
  36. int        init_dsp()
  37. {
  38.     DSP_writePage(1);        /* 書き込みページ            */
  39.     DSP_setPlt( PltDat );    /* パレット設定                */
  40.     DSP_title("TIFLOAD","0.99",C_HWHITE,C_WHITE,C_MBLACK,C_HBLACK);
  41.     IdlDspTime = evt_setDspTime( 1, 432, 4, C_WHITE, C_MBLACK );    /* 時刻表示アイドリング処理設定    */
  42.     SYL_clear();
  43. }
  44.  
  45. /*************************************************************************
  46. *    初期化
  47. *************************************************************************/
  48.  
  49. int        init()
  50. {
  51.     DSP_sysInit(0);            /* 表示システム初期化        */
  52.     KBF_sysInit();            /* キーボードシステム初期化    */
  53.     KBF_kan_off();
  54.     FDL_sysInit();            /* ファイルダイアログ初期化    */
  55.  
  56.     sdk_control(0);            /* サイドワーク起動禁止        */
  57.  
  58.     DSP_writePage(0);        /* 書き込みページ            */
  59.     DSP_setPlt( PltDat );    /* パレット設定                */
  60.     DSP_boxf(0,24,639,463,PSET,COLMIX(5,6));
  61.  
  62.     init_dsp();
  63. }
  64.  
  65. /*************************************************************************
  66. *    終了
  67. *************************************************************************/
  68.  
  69. int        term()
  70. {
  71.     FDL_sysEnd();
  72.     KBF_sysEnd();
  73.     DSP_sysEnd();
  74. }
  75.  
  76. /*************************************************************************
  77. *    TIFFデータ読み込み&表示
  78. *************************************************************************/
  79.  
  80. int        tif_load()
  81. {
  82.     int        i, x, y, ret, pixel, md, x0, y0;
  83.     short    fr[4];
  84.     char    *fdl;        /* ファイルダイアログ用    */
  85.     char    *fn;        /* ファイル名取得用        */
  86.     char    *img;        /* TIFF表示用ワーク        */
  87.  
  88.     img = NULL;
  89.     x = y = DLGPOS_CENTER_OF_SCN;    /* ダイアログ&メニュー表示位置    */
  90.  
  91.     if ( (fdl = FDL_open(0)) == NULL )
  92.         return (ERR);
  93.     FDL_set_title( fdl, "TIFF LOAD");
  94.     FDL_set_wildcard( fdl, "*.tif");
  95.  
  96.     for(;;)
  97.     {
  98.         ret = FDL_start(fdl);
  99.         if ( ret != NORMAL )
  100.             break;
  101.         fn = FDL_get_filename(fdl);
  102.         if ( *fn == '\0' )
  103.             continue;
  104.  
  105.         if ( (img = IMG_open()) == NULL )
  106.         {    /* error */
  107.             FDL_close(fdl);
  108.             return (ERR);
  109.         }
  110.  
  111.         IMG_setPage(img ,0);            /* 表示ページ指定        */
  112.         IMG_setAtt(img,IMG_ATT_PLTON);    /* パレット設定属性ON    */
  113.  
  114.         if ( IMG_load(img,fn) == NORMAL )
  115.         {
  116.             IMG_getFr(img,fr);    /* 画像データの大きさを取得    */
  117.             pixel = IMG_getPixel(img);
  118.             switch ( pixel )
  119.             {
  120.                 case  1:    /* モノクロ    */
  121.                 case  4:    /* 16色        */
  122.                     x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
  123.                     y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  124.                     md = 3;
  125.                     break;
  126.                 case  8:    /* 256 色    */
  127.                     x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
  128.                     y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  129.                     md = 14;
  130.                     break;
  131.                 case 16:    /* 32768 色    */
  132.                     x0 = (512 - (fr[2] - fr[0] + 1)) / 2;
  133.                     y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  134.                     md = 17;
  135.                     break;
  136.                 default:
  137.                     goto _TIF_ERR;
  138.             }
  139.             IMG_setPos(img,x0,y0);    /* 表示位置補正            */
  140.             MOS_COFF();                /* マウスカーソル消去    */
  141.             EVT_idl_stop(IdlDspTime);
  142.  
  143.             DSP_writePage(1);
  144.             EGB_color(EgbPtr,1,0);
  145.             EGB_clearScreen(EgbPtr);
  146.  
  147.             EGB_resolution(EgbPtr,0,md);    /* 画面モード設定    */
  148.             DSP_writePage(0);
  149.             EGB_color(EgbPtr,1,0);
  150.             EGB_clearScreen(EgbPtr);
  151.  
  152.             IMG_dsp(img);
  153.             while ( kbhit() == 0 && MOS_pget(&x0,&y0) == 0 )
  154.                 EVT_idl();
  155.             while ( MOS_pget(&x0,&y0) )
  156.                 EVT_idl();
  157.             for ( i = 0; i < 2; ++i )
  158.                 EGB_resolution(EgbPtr,i,3);
  159.             init_dsp();
  160.             KBF_clear();
  161.             EVT_idl_start(IdlDspTime);
  162.         } else
  163.         {
  164. _TIF_ERR:    MNU_sure( x, y, C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  165.                 SELBTN_ATT_CENTER, "    %s    \n    Tiff load error!!    ", fn );
  166.         }
  167.         if ( img )
  168.         {
  169.             IMG_close(img);
  170.             img = NULL;
  171.         }
  172.     }
  173.     FDL_close(fdl);
  174.  
  175.     return (NORMAL);
  176. }
  177.  
  178. /*************************************************************************
  179. *    MAIN
  180. *************************************************************************/
  181.  
  182. int        main()
  183. {
  184.     init();
  185.  
  186.     tif_load();
  187.  
  188.     term();
  189.     return (0);
  190. }
  191.